package day230515;

import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
import java.util.TreeSet;

/**
 * @author 兴趣使然黄小黄
 * @version 1.0
 * @date 2023/5/15 9:10
 * 电话号码
 */
public class Main02 {

    public static void main(String[] args) {
        // 建立字母与数字的映射
        String alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
        String number = "22233344455566677778889999";
        Map<Character, Character> map = new HashMap<>();
        int index = 0;
        while (index < alphabet.length()) {
            map.put(alphabet.charAt(index), number.charAt(index));
            index++;
        }
        Scanner scan = new Scanner(System.in);
        while (scan.hasNext()) {
            int n = scan.nextInt();
            scan.nextLine(); // 去除多余的换行符
            TreeSet<String> set = new TreeSet<>(); // 存储字典序的xxx-xxxx结构的电话号码
            while (n-- != 0) {
                String line = scan.nextLine(); // 获取一行的输入
                StringBuilder curRes = new StringBuilder(); // 存储当前行转化的中间结果xxxxxxx, 未格式化
                // 数字与字母转化
                for (char c : line.toCharArray()) {
                    if (isDigit(c)) {
                        // 如果是数字, 则直接拼接
                        curRes.append(c);
                    } else if (isUpper(c)) {
                        // 如果是大写字母则拼接转化后的数字
                        curRes.append(map.get(c));
                    }
                }
                // 格式化结果为 xxx-xxxx 形式
                line = curRes.substring(0, 3) + "-" + curRes.substring(3);
                // 存储结果去重并按照字典序排列
                set.add(line);
            }
            // 打印结果
            for (String item : set) {
                System.out.println(item);
            }
            System.out.println();
        }
        scan.close();
    }

    // 判断是否为数字
    private static boolean isDigit(char c) {
        return '0' <= c && c <= '9';
    }

    // 判断是否为大写字母
    private static boolean isUpper(char c) {
        return 'A' <= c && c <= 'Z';
    }
}
